<?php

namespace app\admin\controller;

use think\Request;
use app\admin\model\Admin as AdminModel;
use think\Db;

class Admin extends AdminController
{
    /**
     * 管理员资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        // 管理员列表, 管理员对应角色
        $res = Db::table('xt_admin')->alias('a')
            ->join('xt_admin_relate_role ar', 'ar.adminId = a.aid')
            ->join('xt_admin_role r', 'r.id = ar.roleId')
            ->order('a.aid asc')
            ->select();
        // 模板渲染
        return $this->assign('res',$res)->fetch('index');
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        $res = Db::table('xt_admin_role')->field('id,name')->select();
        return $this->assign('res',$res)->fetch('add');
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        // 依赖注入的方式
        $post = $request->post();

        // dump($post);die;
        // 实例化Model
        $admin = new AdminModel();
        // 传入数据到Model中
        $admin->data($post);
        $admin->password = md5($post['password']);
        // 过滤非数据表的字段,并写入数据, 返回写入记录数量
        $result = $admin->allowField(true)->save();
        // 判断跳转
        if ($result > 0) {
            $aid = AdminModel::getLastInsId();
            Db::table('xt_admin_relate_role')->insert([ 'roleId' => $post['roleId'], 'adminId' => $aid ]);
            return $this->success('添加成功了', url('admin/admin/index'));
        } else {
            return $this->error('添加失败了');
        }
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($aid)
    {
        // 静态创建模型对象
        $res = AdminModel::get($aid)->getData();
        return $this->assign('res',$res)->fetch('edit');
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        //
    }

    // 角色分配页面
    public function adminRole($aid)
    {
        $res = Db::table('xt_admin_role')->field('id,name')->select();
        $role = Db::table('xt_admin_relate_role')->where('adminId',$aid)->find();
        $userName = AdminModel::get($aid)->getData('userName');
        $this->assign([
            'userName' => $userName,
            'aid' => $aid,
            'roleId' => $role['roleId']
        ]);
        return $this->assign('res',$res)->fetch('adminrole');
    }

    // 角色分配执行
    public function adminRelate($aid,$roleId)
    {
        $aid = input('post.aid');
        $roleId = input('post.roleId');
        $res = Db::table('xt_admin_relate_role')->where(['adminId' => $aid])->update(['roleId' => $roleId]);
        if ( !$res ) {
            return $this->error('权限分配失败', url('admin/admin/index'));
        }
        return $this->success('权限分配成功', url('admin/admin/index'));
    }
    
}
